diff --git a/system/database/DB_active_rec.php b/system/database/DB_active_rec.php
index 3e9923e..953cc95 100644
--- a/system/database/DB_active_rec.php
+++ b/system/database/DB_active_rec.php
@@ -399,18 +399,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * orwhere() is an alias of or_where()
-	 * this function is here for backwards compatibility, as
-	 * orwhere() has been deprecated
-	 */
-	function orwhere($key, $value = NULL, $escape = TRUE)
-	{
-		return $this->or_where($key, $value, $escape);
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * Where
 	 *
 	 * Called by where() or orwhere()
@@ -672,18 +660,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * orlike() is an alias of or_like()
-	 * this function is here for backwards compatibility, as
-	 * orlike() has been deprecated
-	 */
-	function orlike($field, $match = '', $side = 'both')
-	{
-		return $this->or_like($field, $match, $side);
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
 	 * Like
 	 *
 	 * Called by like() or orlike()
@@ -776,18 +752,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * groupby() is an alias of group_by()
-	 * this function is here for backwards compatibility, as
-	 * groupby() has been deprecated
-	 */
-	function groupby($by)
-	{
-		return $this->group_by($by);
-	}	
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * Sets the HAVING value
 	 *
 	 * Separates multiple calls with AND
@@ -801,19 +765,7 @@
 	{
 		return $this->_having($key, $value, 'AND ', $escape);
 	}
-
-	// --------------------------------------------------------------------
-
-	/**
-	 * orhaving() is an alias of or_having()
-	 * this function is here for backwards compatibility, as
-	 * orhaving() has been deprecated
-	 */
-
-	function orhaving($key, $value = '', $escape = TRUE)
-	{
-		return $this->or_having($key, $value, $escape);
-	}	
+	
 	// --------------------------------------------------------------------
 
 	/**
@@ -939,18 +891,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * orderby() is an alias of order_by()
-	 * this function is here for backwards compatibility, as
-	 * orderby() has been deprecated
-	 */
-	function orderby($orderby, $direction = '')
-	{
-		return $this->order_by($orderby, $direction);
-	}
-	
-	// --------------------------------------------------------------------
-
-	/**
 	 * Sets the LIMIT value
 	 *
 	 * @access	public
@@ -1126,18 +1066,6 @@
 	// --------------------------------------------------------------------
 
 	/**
-	 * getwhere() is an alias of get_where()
-	 * this function is here for backwards compatibility, as
-	 * getwhere() has been deprecated
-	 */
-	function getwhere($table = '', $where = null, $limit = null, $offset = null)
-	{
-		return $this->get_where($table, $where, $limit, $offset);
-	}
-
-	// --------------------------------------------------------------------
-
-	/**
 	 * Insert_Batch
 	 *
 	 * Compiles batch insert strings and runs the queries
